//
//  GtasksViewController.m
//  Bus
//
//  Created by wangjiajia on 13-11-15.
//  Copyright (c) 2013年 wangjiajia. All rights reserved.
//

#import "Gtasks.h"
#import "DropDownView.h"
#import "MBProgressHUD.h"
#import "Tools.h"
#import "WebServicesUtils.h"
#import "ASIHTTPRequest.h"
#import "JsonParser.h"
#import "EGORefreshTableHeaderView.h"
#import "TableCellSingleton.h"
#import "UserForm.h"
#import "FormItemCell.h"
#import "Transform.h"
#import "UIButton+Bootstrap.h"
#import "Wt.h"
extern int userId;
extern NSString* userName;
@interface Gtasks (){
    //这里声明的都是私有的
    MBProgressHUD * hud;
    //int allCount;//当前已经获取的所有新闻个数
    BOOL isLoadOver;//是否加载完全部数据 defalut='' 相当于NO
    BOOL isLoading;//是否正在加载 default='' 相当于NO
    BOOL clearOldData;//是否清空原数据，初始化和下拉刷新时需要清空
    NSArray *parasArray;
    ASIHTTPRequest* globalRequest;
    NSString* postNotification;//广播identity
}

@end

@implementation Gtasks

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

#pragma mark- 从详情视图返回到本视图时，刷新数据，避免系统对资源回收照成TableViewCell滚不动！

- (void)viewDidLoad
{
    [super viewDidLoad];
    //NSLog(@">>>进入代办，userId=%d；userName=%@",userId,userName);
    //初始标记
    isLoadOver=NO;
    isLoading=NO;
    // Do any additional setup after loading the view from its nib.
    
    CGRect dropDownFrame;
    //    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
    //        // Load resources for iOS 6.1 or earlier
    //        dropDownFrame=CGRectMake(0, 20, 320, 300);
    //    } else {
    //
    //        // Load resources for iOS 7 or later
    //        dropDownFrame=CGRectMake(0, 64, 320, 300);
    //    }
    dropDownFrame=CGRectMake(0, 0, 320, 300);//真机

    self.dropDown=[[DropDownView alloc] initWithFrame:dropDownFrame];
    postNotification=@"Gtasks_Notification_selectChanged";
    self.dropDown.postNotificationName=postNotification;
    self.dropDown.textField.placeholder=@"请选择待办类型";
    self.dropDown.textField.text=@"所有表单类型";//提前到这里来初始化值
    //self.dropDown.tableArray=[NSArray arrayWithObjects:@"收文件",@"公共",@"审批表", @"收文件",@"公共",nil];//这会导致只返回5个
    [self.view addSubview:self.dropDown];
    
    if (_refreshHeaderView == nil) {
		
		EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.formTableView.bounds.size.height, self.view.frame.size.width, self.formTableView.bounds.size.height)];
		view.delegate = self;//和网络请求有异曲同工之妙，将自身作为代理，view在适当时候会调本类实现的代理方法
		
        [self.formTableView addSubview:view];
		_refreshHeaderView = view;//让外部_refreshHeaderView指向这个view，便于访问。当然也可以用_refreshHeaderView直接初始化赋值，不用view
	}
	//  update the last update date
	[_refreshHeaderView refreshLastUpdatedDate];
    
    //初始化 表单类型 下拉列表数据
    globalRequest=[WebServicesUtils getWFFormWithDelegate:self];
    //初始化formsArray
    formsArray=[[NSMutableArray alloc] initWithCapacity:12];
    
    //下拉列表改变监听(广播)
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestForFirstPage) name:postNotification object:nil];
    //segment 添加监听
    [self.seg_State addTarget:self action:@selector(requestForFirstPage) forControlEvents:UIControlEventValueChanged];
    
    // [self requestForFirstPage];//移到viewWillAppear
    ////NSLog(@"%@,%@",NSStringFromCGRect(self.seg_State.frame),NSStringFromCGRect(self.formTableView.frame));
}
-(void)viewWillAppear:(BOOL)animated{
    ////NSLog(@">>>界面即将出现!");
    NSString* state=[self.seg_State titleForSegmentAtIndex:[self.seg_State selectedSegmentIndex]];
    //1、刚加载进来，未办理，发起请求；2、返回时，未办理的可能被办理，重新发起请求。
    if([state isEqualToString:@"未办理"]){
        [self requestForFirstPage];
        //刷新待办个数
        [[NSNotificationCenter defaultCenter] postNotificationName:@"refresh_todonum" object:nil];
    }
    if(formsArray){
        [self.formTableView reloadData];
        //NSLog(@"界面即将显示，reloadData 还原现场。");
    }
    
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(void)viewWillDisappear:(BOOL)animated{
    if(globalRequest){
        [globalRequest clearDelegatesAndCancel];
    }
    [super viewWillDisappear:animated];
}
- (void)viewDidUnload {
    [self setDropDown:nil];
    [self setSeg_State:nil];
    [self setFormTableView:nil];
    [super viewDidUnload];
}


#pragma mark- 类方法具体实现

-(void)requestForFirstPage{
    if(isLoading){
        //NSLog(@"上一个请求正在处理中，本次请求被忽略！");
        [Tools toastNotification:@"请等待上一个请求完成！" andView:self.view andLoading:NO andIsBottom:NO];
        return;
    }
    isLoading=YES;
    clearOldData=YES;
    
    //[self clearData];//清空原来的数据.这里清空时机不合适！！！
    //原因:清除数据源后，在获得请求返回的数据之前，数据源为空。此时再下拉刷新，系统会对“越界”的TableViewCell重绘，需要数据源来加载数据。由于此时数据源为空，那么就有异常！ index 4 beyond bounds for empty array。说明下拉过了第4个，释放第4个TableViewCell，回位时，重新加载第4个。没有数据源而报错！精辟！
    [self loading];
    [self getParams];
    ////NSLog(@"parasArray.count=%d",parasArray.count);
    if(parasArray.count>0)//ios7可以取得parseArray数据，ios6 则取不到？？？
        globalRequest=[WebServicesUtils getUserFormByUserID:userId andFormName:[parasArray objectAtIndex:0] andState:[parasArray objectAtIndex:1]andPageFor:1 andPageSize:default_page_size withDelegete:self];
}
-(void)requestForNextPage{
    
    if(isLoading){
        //NSLog(@"上一个请求正在处理中，本次请求被忽略！");
        [Tools toastNotification:@"请等待上一个请求完成！" andView:self.view andLoading:NO andIsBottom:NO];
        return;
    }
    if(isLoadOver){
        [Tools toastNotification:@"数据已经全部加载完!" andView:self.view andLoading:NO andIsBottom:NO];
        //NSLog(@"数据已经全部加载完，没有数据了！");
        return;
    }
    //合二为一
    //    if(isLoading || isLoadOver){
    //        return;
    //    }
    isLoading=YES;
    clearOldData=NO;
    if(!hud)
    {
        hud=[[MBProgressHUD alloc] initWithView:self.view];
    }
    
    [Tools showHUD:@"正在获取数据..." andView:self.view andHUD:hud];
    int pageIndex= formsArray.count/default_page_size+1;
    [self getParams];
    globalRequest=[WebServicesUtils getUserFormByUserID:userId andFormName:[parasArray objectAtIndex:0] andState:[parasArray objectAtIndex:1] andPageFor:pageIndex andPageSize:default_page_size withDelegete:self];
}

-(void)getParams{
    NSString* type=[self.dropDown.textField.text isEqualToString:@"所有表单类型"]?@"":self.dropDown.textField.text;//tag=1的"表单类型"请求结束时才会设置textField的值。ios6下type=null,未初始化好。ios7下可以初始化好。把初始化提前到viewDidLoad中。可以解决问题。或者加一个if判断也行。这里2个都有，既提前也加判断。
    if(type==nil){
        type=@"";
    }
    NSString* state=[self.seg_State titleForSegmentAtIndex:[self.seg_State selectedSegmentIndex]];
    parasArray= [NSArray arrayWithObjects:type, state,nil];//ios6,type=nil,初始化失败，ios7初始化成功
    ////NSLog(@"状态参数为:type=%@,state=%@,parasArray=%@",type,state,parasArray);
    //加上判断
    //if(parasArray.count==0){
    //      //NSLog(@"状态参数初始化失败，默认为所有类型，未办理");
    //  parasArray=[NSArray arrayWithObjects:@"",@"未办理",nil];
    //}
    
}
-(void)clearData{
    if(formsArray)
    {
        //NSLog(@"初次加载或下拉刷新时>清空原数据%d条",formsArray.count);
        [formsArray removeAllObjects];
        isLoadOver=NO;
    }
}

//处理、查看
-(void)goTransform:(id)sel{
    UIButton* button=(UIButton*)sel;
    ////NSLog(@"处理、查看button.tag=%i",button.tag);
    NSString* state=(NSString*)[parasArray objectAtIndex:1];
    Transform* tf=[[Transform alloc] init];
    tf.state=state;
    tf.Id=[((UserForm*)[formsArray objectAtIndex:button.tag]).Id intValue];
    [self.navigationController pushViewController:tf animated:YES ];
}
//委托
-(void)goEntruct:(id)sel{
    UIButton* button=(UIButton*)sel;
    ////NSLog(@"委托button.tag=%i",button.tag);
    Wt* wt=[[Wt alloc] init];
    wt.userForm=(UserForm*)[formsArray objectAtIndex:button.tag];
    [self.navigationController pushViewController:wt animated:YES ];
}

-(void)loading{
    if(!hud)
    {
        hud=[[MBProgressHUD alloc] initWithView:self.view];
        //hud.labelFont=[UIFont fontWithName:@"-" size:16];//放在默认里面
    }
    [Tools showHUD:@"正在获取数据..." andView:self.view andHUD:hud];
    
}
#pragma mark - UITableViewDelegate协议实现

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if (indexPath.row>=formsArray.count) {//加载更多
        //NSLog(@"加载更多...");
        [self.formTableView reloadData];//避免滚不动
        if(!isLoadOver)
        {
            //@pswjj刷新当前可见的页面，最后一个“加载更多”会刷新，而且也不会滚到第一个了。否则，系统在调用didSelectRowAtIndexPath方法时，自动滚到第一个！
            //[self.formTableView reloadData];
            
            [self requestForNextPage];
        }
        else
        {
            //[self.formTableView reloadData];//避免滚到第一个，而后面的又访问不到。放在上一句下一句均可以呢！
            [Tools toastNotification:@"没有更多数据了！" andView:self.view andLoading:NO andIsBottom:NO];
            
        }
        return;
    }
    //常规点击
    //  [self.navigationController pushViewController:details animated:YES];
    FormItemCell*cell=(FormItemCell*) [tableView cellForRowAtIndexPath:indexPath];
    if([(NSString*)[parasArray objectAtIndex:1] isEqualToString:@"未办理"]){
        if(cell.btnTrans.hidden==YES){
            cell.btnTrans.hidden=NO;
            cell.btnEntrust.hidden=NO;}
        else{
            cell.btnTrans.hidden=YES;
            cell.btnEntrust.hidden=YES;
        }
    }else
    {
        if(cell.btnView.hidden==YES){
            cell.btnView.hidden=NO;
        }
        else{
            cell.btnView.hidden=YES;
        }
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    ////NSLog(@"heightForRowAtIndexPath");//首先调用该方法一次性获取所有的元素高度！
    if(indexPath.row<formsArray.count)
        return 160;
    else
        return 64;
}
#pragma mark - UITableViewDataSource协议实现

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [formsArray count]+1;
    
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    ////NSLog(@"cellForRowAtIndexPath");
    //该方法在滚动时 由系统不断 调用 以重绘界面
    //如果为最后一个则返回加载更多
    if (indexPath.row>=formsArray.count) {
        //返回的这个Cell 字面提示会根据isLoadOver isLaoding 动态判断
        return [TableCellSingleton getLoadMoreCell:self.formTableView isLoadOver:isLoadOver isLaoding:isLoading];
    }
    
    static  NSString * identifier=@"FormItemCellIdentifier";
    
    FormItemCell  *cell=(FormItemCell*)[self.formTableView dequeueReusableCellWithIdentifier:identifier];
    if(cell==nil){
        //用自定义布局 初始化
        NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"FormItemCell" owner:self options:nil];
        // //NSLog(@"FormItemCell中有%d个组件",objects.count);//1个
        cell=(FormItemCell *)[objects lastObject];
        //cell.backgroundView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_bg.png"]];
        //[cell.btnEntrust setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
        cell.backgroundColor=[UIColor clearColor];
        cell.btnTrans.hidden=YES;
        cell.btnTrans.tag=10;//xib中指定的1 不管用。这里指定的10 也不管用。
        cell.btnEntrust.hidden=YES;
        cell.btnView.hidden=YES;
        [cell.btnTrans primaryStyle];
        [cell.btnEntrust successStyle];
        [cell.btnView infoStyle];
        cell.formInfo.font=[UIFont fontWithName:@"-" size:18];
    }
    //变化的放这里
    //NSString* state=(NSString*)[parasArray objectAtIndex:1];
    ////NSLog(@"state=%@",state);
    //    if([state isEqualToString:@"未办理"]){//样式走样
    //        cell.btnTrans.hidden=YES;
    //        cell.btnEntrust.hidden=YES;
    //        [cell.btnView removeFromSuperview];
    //    }else{
    //        [cell.btnTrans removeFromSuperview];
    //        [cell.btnEntrust removeFromSuperview];
    //        cell.btnView.hidden=YES;
    //}
    //绑定响应方法
    
    cell.btnTrans.tag=indexPath.row;
    cell.btnEntrust.tag=indexPath.row;
    cell.btnView.tag=indexPath.row;
    [cell.btnTrans addTarget:self action:@selector(goTransform:) forControlEvents:UIControlEventTouchUpInside];
    [cell.btnEntrust addTarget:self action:@selector(goEntruct:) forControlEvents:UIControlEventTouchUpInside];
    [cell.btnView addTarget:self action:@selector(goTransform:) forControlEvents:UIControlEventTouchUpInside];
    
    
    //绑定值
    if(formsArray.count>0){
        UserForm* userForm  =[formsArray objectAtIndex:indexPath.row];
        cell.formNo.text=[NSString stringWithFormat:@"%i",indexPath.row+1];
        cell.formInfo.text=[NSString stringWithFormat:@"%@ | %@ | %@",userForm.Sequence,userForm.FqUserName,userForm.State];
        cell.formType.text=userForm.FormName;
        cell.formName.text=userForm.Name;
        if([[parasArray objectAtIndex:1] isEqualToString:@"已办理"])//办理日期降序排序
        {
            //只有查看已办理时，数据库返回该字段，该值有效
            cell.formDate.text=[NSString localizedStringWithFormat:@"最近办理:%@",userForm.UpTimeSet];
        }
        else if([[parasArray objectAtIndex:1] isEqualToString:@"未办理"])//未办理。id降序排序:id越大,发起日期越后
        {
            cell.formDate.text=[NSString localizedStringWithFormat:@"发起时间: %@",userForm.NowTimes];
        }
        else//已委托。id降序排序:id越大,委托日期越后
        {
            cell.formDate.text=[NSString localizedStringWithFormat:@"%@委托:%@",userForm.NowTimes,userForm.WtUsername];
            
        }
    }
    //代码添加 -失败
    //    UIView* transformView=[[UIView alloc] initWithFrame:CGRectMake(0, 120, 320, 40)];
    //    UIButton* buttonTrans=[[UIButton alloc]initWithFrame:CGRectMake(20, 10, 120, 20)];
    //    buttonTrans.titleLabel.text=@"处理";
    //
    //    UIButton* buttonEntrust=[[UIButton alloc]initWithFrame:CGRectMake(180, 10, 120, 20)];
    //    buttonEntrust.titleLabel.text=@"委托";
    //
    //    [transformView addSubview:buttonTrans];
    //    [transformView addSubview:buttonEntrust];
    //
    //    [cell.contentView addSubview:transformView];
    
    return cell;
    
}

#pragma mark - 处理网络请求回调
-(void)requestFinished:(ASIHTTPRequest *)request{
    //请求响应太快了，无法观察！所以需要模拟请求耗时
    //[NSThread sleepForTimeInterval:3];
    if(hud){
        [hud hide:YES];
    }
    if(request.tag==1){//获取表单类型处理，不涉及isLoading的判断
        NSString * responseStr=[request responseString];
        ////NSLog(@"%@", responseStr);//json字符串
        self.dropDown.tableArray=[JsonParser parseAsWFForm:responseStr];
        [self.dropDown.tableArray insertObject:@"所有表单类型" atIndex:0];
        [self.dropDown.tv reloadData];
        [self.dropDown.tv selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];//默认选择第一个,该方法没有触发didSelectRowAtIndexPath,所以textField不会赋值,所以只好人为赋值为列表第1个值 [self.dropDown.tableArray objectAtIndex:0]即"所有表单类型"
        
        //self.dropDown.textField.text=@"所有表单类型";//提前在viewDidLoad中初始化值
        
        
        ////NSLog(@"%i", self.dropDown.tableArray.count);//32个
        
    }else if(request.tag==2){//获取表单处理
        isLoading=NO;
        if(clearOldData){//如果只是请求第一页，需要清空原数据！（初次加载或下拉刷新时）
            [self clearData];
        }
        NSString * responseStr=[request responseString];
        ////NSLog(@"%@",responseStr);
        
        NSMutableArray*  formsArrayTemp=[JsonParser parseAsUserForms:responseStr];
        //allCount+=formsArrayTemp.count;
        //按道理应该解析为12条数据，如果少于12条，则表明加载完毕了。
        //如果=12条，则可能还有下一页数据。
        //NSLog(@"获取%d条表单数据",formsArrayTemp.count);
        if(formsArrayTemp.count<default_page_size){
            isLoadOver=YES;
        }
        //if(clearOldData){//如果只是请求第一页，需要清空原数据！（初次加载或下拉刷新时）
        //  [self clearData];//clearData方法中会把isLoadOver=NO;导致加载完毕的isLoadOver=YES被覆盖。所以需要提前。
        //}
        NSInteger showIndex=[formsArray count];//记录下一个显示下标位置.(count-1)+1=count.特别的，第一页或者下拉刷新时，为0.请求数据后会滚动到第一个。如果原列表就在第一个，则没有滚动。
        [formsArray addObjectsFromArray:formsArrayTemp];//这个formsArray需要先初始化好，否则formsArray无效，add不了数据，界面无显示。
        
        //NSLog(@"目前总共有表单数据%d条,reloadData again!",formsArray.count);
        //[self.formTableView setScrollsToTop:NO];//直接接着加载数据，不用滚到第一个。ps:原来如此简单，研究了开源社区源码老半天都没发现它是如何设置的。。。看来有时自己更靠谱!后来才发现，关键在于@pswjj
        [self.formTableView reloadData];//加载数据到界面
        
        [self.formTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:showIndex inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
        //对于下拉刷新，通知它处理完成，结束动画
        [self doneLoadingTableViewData];
        
        //反馈信息 isLoadOver?已经是YES了,但是还是没效果？？？
        [Tools toastNotification:[NSString stringWithFormat:@"获取数据%d条,共%d条%@",formsArrayTemp.count,formsArray.count,isLoadOver?@",已加载全部数据!":@""] andView:self.view andLoading:NO andIsBottom:NO];
    }
}

-(void)requestFailed:(ASIHTTPRequest *)request{
    //NSLog(@"处理请求失败%@",request.responseString);
    if(hud){
        [hud hide:YES];
    }
    //可以换成友好的顶部弹出提示
    //UIAlertView *alert=  [[UIAlertView alloc] initWithTitle:@"提示" message:@"网络请求错误!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil] ;
    //
    //    [alert show];
    [Tools toastNotification:@"处理请求失败，请检查网络连接!" andView:self.view andLoading:NO andIsBottom:NO];
    //对于下拉刷新，通知它处理完成，结束动画，否则一直在那里显示！！！
    [self doneLoadingTableViewData];
    //对于最后一个加载更多，不要一直显示正在加载
    isLoading=NO;//如果设置成YES，表明上一个请求一直在处理中，无法处理下一个请求
    isLoadOver=NO;
    //NSLog(@"数据个数还是%d",formsArray.count);
    [self.formTableView reloadData];//刷新一下，否则无法滑动
}


#pragma mark - 数据源 当前加载状态
//标记正在加载中
- (void)reloadTableViewDataSource{
	
	//  should be calling your tableviews data source model to reload
	//  put here just for demo
	_reloading = YES;
	
}
//标记加载完成，结束动画
- (void)doneLoadingTableViewData{
	
	//  model should call this when its done loading
	_reloading = NO;
    //结束动画,并对当前数据进行处理
	[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.formTableView];
	
}


#pragma mark- 重写?UIScrollViewDelegate方法 用于箭头动画 在UITableView滑动时触发
//如何映射到这个方法呢，只要有UIScrollView就会自动映射？
//这是一个代理，UITableView:UIScrollView 而在UIScrollView中定义了该代理
//在滑动时 会通知代理调用方法
//代理方法也可以被重写？

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    //滑动过程中，不管往下滑或则往上回滑，都会不断调用
	[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];//控件内部处理
    ////NSLog(@"scrollViewDidScroll");
}

//结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
	
	[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
	// //NSLog(@"scrollViewDidEndDragging");
}

#pragma mark- EGORefreshTableHeaderDelegate 代理的具体实现

-(BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view{
    return _reloading; // 应该返回，用于判断是否在加载中以避免重叠加载
}
-(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view{
	return [NSDate date]; // 应该返回，用这个时间更新view的最后更新日期
}
//触发刷新方法——业务代码都在这里
-(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view{
    [self reloadTableViewDataSource];//标记加载中
    //业务代码
    [self requestForFirstPage];
    //标记加载完成，结束view动画，延迟3秒以模拟业务处理时间。
	//[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3];
}


/**
 #pragma mark- 处理广播时的手动刷新
 - (void)clickCurrentTab:(NSNotification *)notification
 {
 if (notification.object) {
 if ([(NSString *)notification.object isEqualToString:@"0"]) {
 //手动下拉75像素(负数是Y轴正向)
 [self.formTableView setContentOffset:CGPointMake(0,-75) animated:YES];
 [self performSelector:@selector(doneManualRefresh) withObject:nil afterDelay:0.4];//给上面的动画0.4秒显示时间，之后调用doneManualRefresh。
 }
 }
 }
 - (void)doneManualRefresh
 {
 [_refreshHeaderView egoRefreshScrollViewDidScroll:self.formTableView];
 [_refreshHeaderView egoRefreshScrollViewDidEndDragging:self.formTableView];//由于此时的距离是75，会触发delegete的方法=>下拉刷新
 }
 
 */

@end
